Пассивные способности позволяют аттачить спецэффекты. Вместо триггерного создания этого эффекта, быть может, достаточно дать абилку предмету, которая даст такой спецэффект? Если не ошибаюсь эффект таким образом может дать любая пассивная способность(во всяком случае точно дают Сфера(способность мага без коня у людей) и способности повышения характеристик предмета(в т.ч. защиты и атаки)) где что прописывать посмотрите в способности Сфера.
у парня проблемы с алгоритмом, в какой вселенной 0.01 * 10 не 0.1?
В компьютерной. И да, 0.01 * 10 тоже может быть не равно 0.01 + ... + 0.01. Потому что складываются и умножаются real по-разному. Hate, надо просто использовать целочисленные, или пользоваться ==, в JASS == округляет числа для сравнения (!= не округляет).
Пороверил разные варианты, сразу упомяну, что с целочисленными всё огонь, просто какие-то другие воспоминания с ними всплывали. PT153, сначала не понял, зачем мне твоя строчка, она всего лишь выдавала 0.1 вместо 0.100, но тестировал разные варианты и всё прояснилось. Если задавать шаг 1.0, то всё исправно считается до 10.0, если задавать шаг 0.2, то всё считается до 2.2 и отображается ровно, но если сделать шаг 1.01, то вот тут и появляется то, ради чего ты эту строчку дал.
Именно с дробной частью косяк, и теперь не знаю как выбрать лучший ответ, по идее у тебя в каждом комментарии полезная информация. Просто объединил их в итоге.
Периодическое событие
Условия там всякие
Боевая единица отдать приказ (точка) - Двигаться в (позиция юнита со смещением на 100-200 с (поворотом боевой единицы) градусов)
По памяти написал
А если имелось в виду толкать юнита то тригерно двигаем в точку с полярным смещением принцип тот же.
В способности "Канала" измените id на другой спелл, допустим "holybolt", и потом триггерно заставте использовать этот спелл. Старайтесь дать id спелла, который похож на ваш по воздействию. Типа Цель-Юнит, Цель-Точка или Цель-Объект.
Сергей4, высоту нельзя указать отрицательной.
Очевидно, точка-корень, которая отвечает за положение модели указана над землёй для этой анимации.
Тебе придётся редактировать модель. Это недолго.
Как вариант, раз вы не паузите юнита, он может заагриться на кого-то и проигрываемая вами анимация сбросится на анимацию атаки.
Он и правую кнопку в землю нажать может и всё сбросится.
Я уже решил проблему ускорением и новым таймером, хотя всё равно смотрится так себе, но работает.
Анимация вращения "как у акса" но была с названием "spell, slam" поэтому не мог её к вихрю прикрутить.
способ 1
вешать структуру на таймер с помощью эксплойта (для тех кто не знает структура это число) а потом этим таймером вызывать нужную функцию спустя 0 секунд
плюсы:
простота
минусы:
требует добавлять иф на каждую новую функцию
второй способ
тоже самое что и 1 только на таймер вешается вдобавок название функции и таймер вызывает её экзекутом
вот моя библиотека по 2 способу и карта с примером
в библиотеке в самом верху есть небольшой док по 3 функциям
Огненную стрелу нельзя спамить, в отличие от обычных спелов со снарядами.
Я для снарядов использовал Death Coil. Заменил захаркоденный эффект попадания, импортировав пустой файл по пути этого эффекта. Работать этот способ будет, если на карте нет юнитов с классификацией Нежить. И если не надо кастовать в своих (хотя это можно попытаться обойти временной выдачей классификации Нежить, я не проверял).
Есть ещё Acid Bomb, но эта способность накладывает бафф. До 1.31 (или 1.30) это будет сбивать все аналогичные баффы.
Я сам пытался часа полтора, но я вообще не имею представления как работать с этим.
Если сам не можешь разобрать - гугли, уже всё есть, даже на ютубе видео. А то получается так, что ты скачал что-то, что не разбираешь сам, а нас просишь доделать так, как тебе нужно
MultiboardGetItem создает игровой объект-ячейку, MultiboardReleaseItem разбивает её обратно. Если таблица навсегда. то выгоднее хранить объекты в массиве, чтобы не терять время на постоянные Get-Release + это позволяет в дальнейшем асинхронно менять содержимое ячеек, что невозможно, если использовать функции.
Ну а кто жрет память, моешь с помощью этой тулзы глянуть (может не запускаться, у меня работает) - кинуть в корень варика и запустить при работающей игре
Какие-то объекты могут создавать зависимости, осовбожегние хендла не значит, что объект чисто удален. В целом это всё уже из области псевдопрограммирования - не стоит волновться о таких мелочах. Create & Destroy работают достаточно хорошо. И да, объекты это все agent
type agent extends handle all reference counted objects
call SaveInteger(Hash,GetHandleId(GetTriggerUnit()),5555, CurrentNumberOfSettlement) в одном триггере сохраняем
set CurrentNumberOfSettlement = LoadInteger(Hash,GetHandleId(GetTriggerUnit()),5555) в другом триггере для проверки выгружаем
рабочий вариант
local integer id = GetHandleId(GetTriggerUnit())
call SaveInteger(Hash,id,5555, CurrentNumberOfSettlement) в одном триггере сохраняем
set CurrentNumberOfSettlement = LoadInteger(Hash,id,5555) в другом триггере для проверки выгружаем
Короче вернул обратно локалки, и все заработало. И почему первый вариант не работал. Ладно будут искать подводные камни. Наверное после чистой оптимизации что-то перестало работать. эх... придеться посравнивать. похоже старый код где то мб лучше. только времени потратил на методы тыка.
Через что уничтожаешь? Если через килл, то конечно умирает и нейтральный.
Если наносить от какого-то даммика урон в мильены, то не умрет нейтральный.
Можно от даммика развеяние нежити за 0.01 сек.
Заменять можно, внося значение золота в переменную и потом, создавая новый рудник, ставить количество золота в него из переменной, благо это даже в ГУИ реализовано.
Редактор не перегружает ресурсы. Тоесть отурыв карту, где используется *Деревня - каменистая тропа*, редактор запомнит этот тайл и при открытии других карт будет использовать именно его.
Можете элементарно проверить закрыв редактор и первой открыть карту с альфа тайлом.
Конечно не забудте убрать галку "Создавать новую карту при открытии" или, что более лучше, используйте JGNP
какое отношение этот пункт имеет к проблеме?
короче покопался в wtg файле
у тебя раньше использовался какой то странный файл гуишных функций
скорее всего он лежал либо в папке с вар3, либо в папке с джнгп и потом его удалили
одна из функций (возвращает булеан) вообще была представлена как набор пробелов
узнавать что это была за функция мне было лень поэтому я её заменил на false (использовалась в условии)
это было в триггере ctart, так что поправь там условие
так же заменил IssueImmediateOrderBJ на IssueImmediateOrder
вот открываемая в редакторе карта
я так и не понял почему ты не можешь просто сделать как улучшение что не так с улучшением как в обычном случае.
дело в описании, вот и не могу так сделать,если сделать через улучшение здания, то при наведении на иконку вплывает подсказка, та же подсказка что будет и у самого здания в списке построек у светлячка, тоесть если делать через улучшение (по идее этот же юнит должен быть и в списке построек (а он там есть) ту подсказку которую я хочу будет лишней. вот пример: Древо жизни превращается в древо мира, при этом все союзные юниты вблизи древа получают повышеную регенерацию здоровья. (а теперь представь что эта подсказка будет в списке построек у светлячка, вообще не то)
Решил проблему путем выбора древа когда истекает однократный таймер, также подумал и решил что наверно лучше делать через способности, а не исследования. Но у меня остался один вопрос, если этот тригер отвечающий за применения этих способностей будет использовать несколько игроков, я не знаю будет ли использоватся оно коректно или нет, также и с отдельным триггером Таймер. Вот что вышло в данный момент:
Во-первых, для каждого нужно сохранять текущие приказы и цели. Чтобы при отдаче приказа юнит не слушался хозяина и продолжал делать свои дела. Вроде пока справляемся с идеей, можно все сохранить в переменные (правда, занудно). Но изначально, нужно сохранять приказ стоп, а то в ячейке пустует и он ничего не делает. Во-вторых, события приказов срабатывают намного раньше, чем он начинает делать. То есть, если дать сразу в этот момент еще один приказ, то ничего не будет, ибо начинает выполнять текущий. И получается, что нужно делать задержку в 0.00. То есть не получится так что сразу. Не понимаю вот, почему близзарды не сделали, чтоб сразу. И в третьих, зацикливание может привести к вылету, нужно отключать, отдавать приказ, и включать триггер. Короче это нафиг никому не нужное, он успевает сделать что-то, немножко отбежать туда - куда ему игрок указал. Делал на скорую руку.
ой немного недоработанную выложил, там вэйт включите. удалите двойной слэш
Прошу прощения, оказалось, что вэйт лучше не использовать. Вместо него таймер используйте, так как с помощью таймера приказ отдается сразу. Скину другую наработку Block of orders Upgraid
На скрине нет нужных полей, где пишутся описания.
Такое бывает, если стоит галочка "Характеристики - Относится к предмету", потому что скиллам предметов не нужны описания.
DazzleFirst, возможно ли как то создать локальный триггер при применении способности и уничтожить обратно?
ведь обычно локальные триггеры как правило при применении способности создаются в инициализации карты...
нет нужды выделять еще один триггер (помимо отлова) на заклинание, если оно не слишком громоздкое в плане исполнения.
Как сообщает товарищ nvc123:
Zeuz, лучше не использовать много триггеров
вообще нету такой ситуации в которой надо много триггеров
стоит обратить на это внимание. Везде и всюду есть свои нюансы которые нужно учитывать. Если не выполнить задуманное с помощью одного триггера, то делаем два.
Была прям один в один ситуация. Игра крашица скорее всего от того, что что bounds выходит за пределы карты. Оставляй отступ от краев.
и даже не границы карты, а границы обзора вродебы ломают все
попробуй rect создать на карте, чтобы он был внутри границы обзора. И bounds выставляй по нему.
Я бы на твоём месте даже без гайдов попробовал бы везде пощёлкать и поискать надпись "Stand", а если бы нашел, то попробовал бы как-нибудь переименовать
IGOREIK, там четыре события на применение способности.
Пробуй разные, выбери, какое подойдёт лучше.
Вариант 8gabriel8 лучше. Немного дополню. Можно найти модель спецэффекта, который применяется во время включения способности. Посмотреть редакторами моделей (War3ME, например), какой там звук используется. И прописать импортированному звуку этот путь.
Короче понял как сделать (ну и в принципе ничего сложного. методом тыка узнал как это сделать. до этого уже 2 часа добил):
расписываю
у меня есть почва
обрабатываю. Но вообще-то не нужно вырезать, просто выделите и все. Но я уж поздно, обработал. По примеру уберсплатов для зданий в варике не вырезаны края. Просто альфа канал стоит
Ну и .. (понял бы любой)
сохраняете в формате tga, потом конвентируете (можно прогой Warcraft 3 Viewer). и смотрим, что получилось
получилось не очень, нужно наверное другую картинку подобрать.
импортировать в карту по путям стандартных моделей...
Abilities\Spells\Human\MassTeleport\MassTeleportCaster.mdx
Abilities\Spells\Human\MassTeleport\MassTeleportTarget.mdx
Abilities\Spells\Human\MassTeleport\MassTeleportTo.mdx
Нашел проблему. Массив имеет ограничение (8192 раз.) А ID юнитов у меня там могут достигать 8-значных чисел.
Поэтому, когда я попытался сохранить мультиборд в переменной с заоблачным массивом, то у меня просто ничего не сработало. Как теперь выбрать свой комментарий, как лучший ответ?=DD
мультиборд в карте на ГУИ? в гуи функциях внутри часто необнуляются локальные переменные объектов
если код то мб не используется MultiboardReleaseItem и итемы остаются висеть
На гуи можно сделать все и если ты будешь обновлять несколько окон мультиборда раз в секунду - ничего страшного не случится. Учетки страшны если ты их создаешь по 100 шт раз в 0.04 всю игру
и удали русские тригеры это отрава для глаз и редактора. Нужное тебе действие как раз таки "конвертировать целочисленную в строку" почему здесь ТАКОЙ ПЕРЕВОД - инфа засекречена
можно в одном мультиборде разным игрокам показывать разные тексты с помощью GetLocalPlayer
Ты не сможешь показать три разных мультиборда. Только один на экране будет отображен. Пример у тебя 1-ый и 2-ой мультиборды. У игрока локально отображен какой то один. Пусть будет 1-ый. Есть спец нативки показа мультиборда. Когда ты показываешь этому игроку 2-ой мульт, 1-ый прячется. Хочешь снова 1-ый показать, показываем его.
Тебе надо как то запоминать тек номер. Пример хочешь показать диалог, прячем мульт.
Можно поизучать фреймы, и создать что то похожее. Если вы знаете как делать. Есть фреймы и тут.
Есть функции, которые показывают свернут или отображен мульт:
native IsMultiboardDisplayed takes multiboard lb returns boolean
native IsMultiboardMinimized takes multiboard lb returns boolean
и нативка которая скрывает или наоборот показывает:
native MultiboardDisplay takes multiboard lb, boolean show returns nothing
примергде-то надо еще таймером будет. просто по идее система работает так: происходит событие изменения ресурса (запоминаем сколько), следом происходит основное событие (покупка-продажа). значит, здесь ловим итем, потом вычисления с налогами. Но такой порядок бывает не всегда. Вот допустим продажа: сначала продаем (итем забирают, событие продажи), потом дают деньги (событие изменения ресурса). как видишь, здесь надо тогда таймером через 0.00 сек или сколько то сек проверять измену реса
хотел реализовать похожую систему (проводить торговлю не через чат, а через кнопочки). только на мем хаке. изменить можно только в мем хаке. если вы изменяете цену типу предмета, тогда она у всех итемов данного типа меняется. сделал так: копию на каждого игрока, у одного будет одна цена, у другого другая. короче каждый игрок товар может предложить по разной цене. как это будет работать пока не знаю (я не все продумал, и поэтому не доделал).
можно стоимость убрать и триггерами начислять/убавлять
А что мешает отслеживать изменение содержимого инвентаря? Т.е. получение предмета, который подходит для манипуляций, после чего поочерёдно проверять только те списки, в которых этот предмет участвует... ну и делать что надо
Так ведь я так и делаю. Юнит получает предмет, содержимое его инвентаря записывается в таблицу. И вот, я не могу придумать по какой схеме мне сравнить эту таблицу со списками рецептов. Вот есть TransfigurationData.List[ID] в нём списки TransfigurationData.List[ID][ID1,2,3,4,5....]
Нужно как-то сделать проверку есть ли в списке TransfigurationData.List[0][1](как пример) то что в инвентаре героя, если да то убрать их и выдать TransfigurationData.Result[Тот же ID что и у List] :)
О ес, оно заработало я сам всё решил. Спасибо за внимание :)
Ну либо для мультикастера заводим одельного дамми с маной, с атрибутами, но при каждом касте скидываем ему кд и ману ставим на макс (если разумеется каст не зависит от кол-ва текущей маны, иначе на кол-во реального героя).
Ну так же можно сделать дамми аналоги способностей для мульткаста, или юзать мемхак с принудительным кастом абилки (но это подходит лишь для дефолтных абилок).
с помощью кода включить нужную анимацию у юнита, разумеется анимация должна быть у модели, у старых варовских моделей анимация разговора была лишь на портрете, это отдельная модель, кроме всяких крипов с мордами в 3 полигона.
Достать то можно - что толку, они имеют иной формат, с ними ниче сделать низя, публичного софта для редактирования и изучения нет, поэтому рефорджевские модели никому и ненужны - ты с ними ниче и не сделаешь.
Для аттачей необходимо использовать способность Tree of Life upgrade ability (Atol), видна только в JNGP, но при помощи некоторых манипуляций можно и в Reforged увидеть.
Альтернатив не так много, о них уже сказал Extremator.
Для этого берутся либо ауры (тогда в них ещё можно и специфический бафф накладывать на носителя), либо абилки от "когтей атаки" и "кольца защиты" (дающие +атаки и +защиту, в них точно так же как в ауре настраиваются точки крепления и модели)
Использовать способность Shpere (Asph) или аналоги у духов возмездия не рекомендуются.
Занят похожим проектом, тебе понадобятся два триггера
Первый - с периодичностью в 30 сек. записывает все юниты такого-то игрока в группу юнитов <Имя переменной, тип - группа юнитов> с двумя условиями - Юнит живой и Юнит не состоит в это группе
Второй - событие, юнит умирает. Условие - юнит состоит в группе юнитов <Имя переменной, тип - группа юнитов>. Действие - удалить юнита из группы юнитов <Имя переменной, тип - группа юнитов>
Хотя по идее можно ужать все это в один триггер, убрав условие из первого триггера Юнит - живой, и после записи в группу выбрасывать из нее всех мертвяков.
Хотя все равно наблюдаются затупы, при довольно большом количестве юнитов на карте.
А может ли быть дело не в триггерах, а к примеру в моделях? Кто нибудь когда нибудь сталкивался с фризами из-за используемых моделей?
Это звучит глупа... Фризы из-за модели...
Тем не менее, попробовал удалить весь импорт из карты (около 6 МБ, 157 файлов mdx). Лаги и фризы прекратились. Сейчас дихотомией пробую найти проблемную модель. Хотя может проблемная модель и не одна, или например может быть накапливаемый эффект, который так не найти.
Сильно уменьшил число лагов, избавившись от двух моделей. Эти модели ещё и сами по себе вели себя странно. В частности, фундамент из модели Домика произвольно прикреплялся к анимациям других моделей. А модель Академии иногда меняла свой видимый масштаб без причины.
всё тему можно закрывать, пару раз сделал то же самое и о чудо всё заработало, в общем спишем на кривизну конвертера :D
P. S. если усидчивости хватит то ожидайте это чудо в разделе модели)
» WarCraft 3 / Действие с задержкой
» WarCraft 3 / Как заставить...
» WarCraft 3 / смена w3m на w3x
» WarCraft 3 / Видеоролики
» WarCraft 3 / Момент запуска снаряда
» WarCraft 3 / Как убрать кое-что
» WarCraft 3 / Сохранение в хэш-таблицу
» Администрация XGM / Не могу ничего сделать
» WarCraft 3 / В чём проблема с ЭТОЙ картой?
» WarCraft 3 / Блокировка приказов
» WarCraft 3 / Порядок строк включен.
» WarCraft 3 / Триггер при инициализации карты
» WarCraft 3 / Ульт охотника на демонов
» WarCraft 3 / Анимации
» WarCraft 3 / Ошибка в скрипте (Lua)
» WarCraft 3 / Способность на кастомные криты
» WarCraft 3 / типы image
» WarCraft 3 / lua: ошибка
» WarCraft 3 / Переменные мультибордов
» WarCraft 3 / Помощь в реализации формулы
» WarCraft 3 / цикл в lua
» WarCraft 3 / Урон от атрибутов
» WarCraft 3 / Своя анимация
» WarCraft 3 / Фризы
» WarCraft 3 / MdlVis